Field of the Invention
The present invention relates to GPU acceleration and more particularly to GPU acceleration in database management.
Description of the Related Art
To provide faster video encoding than is possible on a central processing unit (CPU) alone, graphics display codecs have been developed to execute on GPUs. A GPU is a highly parallel processor capable of managing thousands of threads of execution simultaneously. By capitalizing upon the parallel processing capability of a GPU, video can be encoded faster in the video card while simultaneously offloading from the CPU of the host computing device those video processing tasks normally executed in the CPU. GPU computing extends beyond mere video processing in a graphics card and refers more generally to the use of a GPU together with a CPU to accelerate general-purpose applications.
Since its introduction, GPU computing has quickly become an industry standard, enjoyed by millions of users worldwide and adopted by virtually all computing vendors. To wit, GPU computing offers unprecedented application performance by offloading computing-intensive portions of the program code to the GPU from the CPU, while the non-computing intensive portions of the code remain for execution with the CPU. Consequently, from the end-user perspective, applications capitalizing upon GPU acceleration simply run faster.
Of note, the advantages of the GPU can be merged with the traditional capabilities of the CPU to achieve optimized execution of a computer program. Specifically, the combination of a CPU and a GPU can be powerful because the CPU consists of only a few processing cores optimized for serial processing, while the GPU consists of thousands of smaller, more efficient cores designed for parallel performance. As such, serial portions of program code execute in the CPU while parallel portions execute in the GPU.
Database applications like other applications benefit from the combined utilization of GPU acceleration and serial processing in a CPU. In this regard, it is known to apply GPU acceleration to a database system by executing parallelized operations in support of processing query against a database using a database server. The parallelized operations typically include a particular stored procedure available to the database server that includes a GPU executable and the particular stored procedure can be executed on one or more GPU devices. Alternatively, in a more limited implementation, a GPU-enabled database has been deployed as a scratch pad for accelerating database queries.
Nevertheless, the utilization of GPU acceleration in database management is not without consequence. Specifically, several major bottleneck factors affect the likelihood of success in the use of GPU acceleration, including memory transfer, array size, atomic operation, and device initialization. Depending upon conditions, database query processing using serialized CPU computing can outperform the performance GPU computing. Several approaches have been taken in order to address the variable performance of GPU computing in database management. One approach is the simple enhancement of hardware capabilities such as the addition of the number of processing cores available for use so as to provide greater parallel processing capabilities. As well, the bus bandwidth can be increased so as to mitigate memory transfer time. Another approach is to optimize the parallel computing algorithm to minimize processing time.
However, none of the foregoing approaches can be effective when a hardware system enjoys access to poor bandwidth; when the intended computation cannot be parallelized; or when the intended computation does not require enough processing cores to capitalize upon parallel processing in general. In such cases, the resource overhead associated with GPU computing detracts from any computational advantage of parallel computing.